# -*- coding: utf-8 -*-
# 如果你的程序（包括注释）中包含中文，请加上上面这一行，用于指明编码（utf-8）。
# #号开头的行都是注释。

# 如何编辑本程序：
#     用任何文本编辑器均可编辑。

# 如何运行本程序：
#     在终端中，运行：python p404_exception.py

'''
Python使用被称为异常的特殊对象来管理程序执行期间发生的错误。每当发生让Python不知
所措的错误时，它都会创建一个异常对象。如果你编写了处理该异常的代码，程序将继续运行；
如果你未对异常进行处理，程序将停止，并显示一个traceback，其中包含有关异常的报告。
'''

try:
    print(5/0)
except ZeroDivisionError:
    print("You can't divide by zero!")
# 如果不用try-except，Python将显示traceback。


# 另一个例子：

print("Give me two numbers, and I'll divide them.")
print("Enter 'q' to quit.")

while True:
    first_number = input('\nFirst number: ')
    if first_number == 'q':
        break
    second_number = input('Second number: ')
    if second_number == 'q':
        break

    try:
        answer = int(first_number) / int(second_number)
    except ZeroDivisionError:  # 发生ZeroDivisionError时执行
        print("You can't divide by zero!")
    else:  # 没有ZeroDivisionError时执行
        print(answer)
        
 
# 另一个例子：FileNotFoundError异常

file_name = 'alice.txt'
try:
    with open(file_name) as f:
        contents = f.read()
except FileNotFoundError:
    msg = 'Sorry, the file ' + file_name + ' does not exist.'
    print(msg)
    # 如果希望异常发生时，不显示任何提示信息，则将上两行改成 pass 即可。
else:
    # 计算文件大致包含多少个单词。
    words = contents.split()  # 默认分隔符：空格，tab，换行符
    num_words = len(words)
    print('The file ' + file_name + ' has about ' + str(num_words) + ' words.')


    
    

